Skip to content

feature/issue 32 migrate to greenwood#44

Merged
thescientist13 merged 47 commits intomasterfrom
feature/issue-32-migrate-to-greenwood
May 18, 2025
Merged

feature/issue 32 migrate to greenwood#44
thescientist13 merged 47 commits intomasterfrom
feature/issue-32-migrate-to-greenwood

Conversation

@thescientist13
Copy link
Copy Markdown
Contributor

@thescientist13 thescientist13 commented Nov 25, 2023

resolves #32

Screen Shot 2023-11-24 at 9 16 27 PM
Screenshot 2025-05-17 at 7 43 17 PM

Changes

  1. Migrated all API endpoints from Architect to Greenwood
  2. Created local development dashboard
  3. Upgrade to ESLint 9
  4. Ported to TypeScript

TODO

  1. can't bundle now?
    Details
          Error: Could not load /Users/owenbuckley/Workspace/analogstudiosri/api/src/: EISDIR: illegal operation on a directory, read
           at async readFileHandle (node:internal/fs/promises:553:24)
           at async NodeModulesResource.serve (file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/plugins/resource/plugin-node-modules.js:49:18)
           at async Object.load (file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/config/rollup.config.js:81:24)
           at async PluginDriver.hookFirstAndGetPlugin (file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/rollup/dist/es/shared/node-entry.js:20712:28)
           at async file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/rollup/dist/es/shared/node-entry.js:19832:33
           at async Queue.work (file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/rollup/dist/es/shared/node-entry.js:20922:32) {
         errno: -21,
         code: 'PLUGIN_ERROR',
         syscall: 'read',
         pluginCode: 'EISDIR',
         plugin: 'commonjs--resolver',
         hook: 'resolveId',
         id: '/Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/qs/lib/index.js'
       
  2. Fix Contentful / Events serve build error
    Screenshot 2024-12-06 at 2 24 26 PM
    Details
         Started server at http://localhost:8080
         TypeError: callBind is not a function
             at requireCallBound (file:///Users/owenbuckley/Workspace/analogstudiosri/api/public/api/events.js:9431:17)
             at requireSideChannel (file:///Users/owenbuckley/Workspace/analogstudiosri/api/public/api/events.js:10011:18)
             at requireStringify$1 (file:///Users/owenbuckley/Workspace/analogstudiosri/api/public/api/events.js:10454:23)
             at requireLib (file:///Users/owenbuckley/Workspace/analogstudiosri/api/public/api/events.js:11123:32)
             at file:///Users/owenbuckley/Workspace/analogstudiosri/api/public/api/events.js:11135:32
             at ModuleJob.run (node:internal/modules/esm/module_job:234:25)
             at async ModuleLoader.import (node:internal/modules/esm/loader:473:24)
             at async file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/lifecycles/serve.js:404:31
             at async file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/lifecycles/serve.js:311:7
             at async file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/lifecycles/serve.js:269:5
       
  3. How to handle environment variables / file in CI
  4. resolve upstreams / pull in latest version of Greenwood
  5. validate contentful webhook
    • not all webhook chunks are getting pulled over to the .aws-output/ directory - see needs upstream section
    • "Cannot read properties of undefined (reading 'contentType')" 🫨 - see needs upstream section
  6. adopt TypeScript
  7. Prototype an AWS Adapter - feature: AWS Architect adapter ProjectEvergreen/greenwood-demo-adapter-aws#8
    • disable static upload (index.html is being uploaded)
    • externalize the AWS SDK?
  8. Setup environment variables (Node 20? - https://nodejs.org/en/blog/release/v20.6.0)
  9. Disable static uploads, at least just for prod? - deferred to disable static public upload with Architect #57
  10. validate Prisma studio
  11. Update README
  12. Apply prod environment variables (post merge)
    • Lambda API keys
    • Contentful production webhook / endpoint

Upstreams

  1. package.json exports handling for nested default (current solution is super slow though 😬) - improve support for package.json exports when building up import maps ProjectEvergreen/greenwood#1317
  2. @libsql/client and @aws-sdk/client-cloudfront is super slow building up an import map now 😳? Are we double walking maybe? 🤔 - enhancement/issue 684 import map generation cache and dedupe optimizations ProjectEvergreen/greenwood#1377
    • found a massive performance boost to help with circular deps and repetitive / duped deps 💯
  3. why are we getting a resolveId for ./ in Rollup? - rollup bundling failing trying to resolve directories ProjectEvergreen/greenwood#1385
    Details
          Error: Could not load /Users/owenbuckley/Workspace/analogstudiosri/api/src/: EISDIR: illegal operation on a directory, read
           at async readFileHandle (node:internal/fs/promises:553:24)
           at async NodeModulesResource.serve (file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/plugins/resource/plugin-node-modules.js:49:18)
           at async Object.load (file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/config/rollup.config.js:81:24)
           at async PluginDriver.hookFirstAndGetPlugin (file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/rollup/dist/es/shared/node-entry.js:20712:28)
           at async file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/rollup/dist/es/shared/node-entry.js:19832:33
           at async Queue.work (file:///Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/rollup/dist/es/shared/node-entry.js:20922:32) {
         errno: -21,
         code: 'PLUGIN_ERROR',
         syscall: 'read',
         pluginCode: 'EISDIR',
         plugin: 'commonjs--resolver',
         hook: 'resolveId',
         id: '/Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/qs/lib/index.js'
       
  4. No supported entry point for tslib - import map generation not finding package.json for some libraries like tslib (when recursively segmenting entry point) ProjectEvergreen/greenwood#1386
    • WARNING: No supported entry point detected for => 'tslib'
  5. ERROR (ERR_MODULE_NOT_FOUND) with import.meta.resolve for type-fest - https://github.com/ProjectEvergreen/www.greenwoodjs.dev/pull/153/files#r1919461371
    Details
       ERROR (ERR_MODULE_NOT_FOUND): unable to resolve specifier => `type-fest` 
       Cannot find package 'type-fest' imported from /Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/lib/walker-package-ranger.js
       
  6. transitive contentful dependency process is being resolved to the built-in NodeJS process, which of course won't have a package.json - enhancement/issue 684 improve import map generation diagnostics ProjectEvergreen/greenwood#1389
    • this is expected bevahior
    Details
         --------------------------------------
         resolve >>> { dependency: 'process', resolved: 'node:process' }
         derivePackageRoot { resolved: 'node:process', root: '' }
         --------------------------------------
       
  7. some packages are returning ERR_PACKAGE_PATH_NOT_EXPORTED with import.meta.resolve ( @libsql/core, @types/ws, dunder-proto, math-intrinsics) - enhancement/issue 684 improve import map generation diagnostics ProjectEvergreen/greenwood#1389
    Details
         ****************************************************************************
         ERROR (ERR_PACKAGE_PATH_NOT_EXPORTED): unable to resolve specifier => `@libsql/core` 
         No "exports" main defined in /Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@libsql/core/package.json imported from /Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/lib/walker-package-ranger.js
         ERROR (ERR_PACKAGE_PATH_NOT_EXPORTED): unable to resolve specifier => `@types/ws` 
         No "exports" main defined in /Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@types/ws/package.json imported from /Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/lib/walker-package-ranger.js
         ERROR (ERR_PACKAGE_PATH_NOT_EXPORTED): unable to resolve specifier => `dunder-proto` 
         No "exports" main defined in /Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/dunder-proto/package.json imported from /Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/lib/walker-package-ranger.js
         ERROR (ERR_PACKAGE_PATH_NOT_EXPORTED): unable to resolve specifier => `math-intrinsics` 
         No "exports" main defined in /Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/math-intrinsics/package.json imported from /Users/owenbuckley/Workspace/analogstudiosri/api/node_modules/@greenwood/cli/src/lib/walker-package-ranger.js
       
  8. Rollup bundling failing - bug/1385 better sanitize Rollup importer for when resolving user workspace resources ProjectEvergreen/greenwood#1388
  9. Missing chunk bundles for API Routes (and SSR pages?) - API routes (and SSR pages?) with dynamic bundle chunks are not getting synced or bundled into a single file ProjectEvergreen/greenwood#1465
    2025-03-14T16:46:38.181Z undefined ERROR Uncaught Exception {"errorType":"Error","errorMessage":"Cannot find module '/var/task/webhook-contentful.CCGsskaO.js' imported from /var/task/webhook-contentful.js","code":"ERR_MODULE_NOT_FOUND","url":"file:///var/task/webhook-contentful.CCGsskaO.js","stack":["Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/var/task/webhook-contentful.CCGsskaO.js' imported from /var/task/webhook-contentful.js"," at new NodeError (node:internal/errors:405:5)"," at finalizeResolution (node:internal/modules/esm/resolve:332:11)"," at moduleResolve (node:internal/modules/esm/resolve:1029:10)"," at moduleResolveWithNodePath (node:internal/modules/esm/resolve:876:12)"," at defaultResolve (node:internal/modules/esm/resolve:1255:79)"," at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:404:12)"," at ModuleLoader.resolve (node:internal/modules/esm/loader:373:25)"," at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:250:38)"," at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:76:39)"," at link (node:internal/modules/esm/module_job:75:36)"]}
  10. request.json() is coming back a string (???? 0000 string) - request.json not working in API Routes with current AWS based adapter plugins (AWS, Netlify) ProjectEvergreen/greenwood#1460
  11. nested routes not supported atm but only impacts deployed dashboard atm, e.g. /api/webhook/contentful - deferred to restore original nested directory structure for webhooks #56

As a follow up effort, might be cool to turn that simple dashboard into a local first admin UI for updating content too? 🤩

@thescientist13 thescientist13 added feature New feature or request needs upstream labels Nov 25, 2023
@thescientist13 thescientist13 self-assigned this Nov 25, 2023
@thescientist13 thescientist13 force-pushed the feature/issue-32-migrate-to-greenwood branch from 5c4c2c2 to 8d2f0c4 Compare December 11, 2023 21:55
@thescientist13 thescientist13 changed the title Feature/issue 32 migrate to greenwood feature/issue 32 migrate to greenwood Feb 3, 2024
@thescientist13 thescientist13 force-pushed the feature/issue-32-migrate-to-greenwood branch from 8d2f0c4 to 3e39af8 Compare December 6, 2024 19:35
@thescientist13 thescientist13 marked this pull request as ready for review May 18, 2025 00:21
@thescientist13 thescientist13 merged commit a37e6dd into master May 18, 2025
1 check passed
@thescientist13 thescientist13 deleted the feature/issue-32-migrate-to-greenwood branch May 18, 2025 00:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation feature New feature or request needs upstream

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate to Greenwood + AWS Adapter

1 participant